/**
 * Created by mac on 12-1-4.
 * 处理评论及点赞的后端部分
 */
(function( $ ) {

    var commentServers = {

        //数据浅拷贝
        'extend': function( defs, settings ) {
            for ( var attr in defs ) {
                if ( typeof settings[attr] != 'undefined' ) {
                    defs[attr] = settings[attr];
                }
            }
        },


        /**
         * common() 公共方法
         * @param settings
         * settings.type 默认值'POST', 请求的类型
         * settings.dataType 数据类型
         * settings.url 请求数据的地址
         * settings.data 要发送的数据
         * settings.callBack 请求之后的回调函数
         * 回调函数参数 msg 的数据格式如下：
         * {
         *      'data': msg, //成功提交之后返回的数据
         *      'status': 1, //0代表提交失败，1代表提交成功
         *      'error': '失败信息' //提交失败的信息提示
        }
         */
        'common': function( settings ) {
            //设置默认值
            var defs = {
                'type': 'POST',
                'dataType': 'json',
                'url': '',
                'data': {},
                'callBack': function(){}
            };

            //覆盖数据
            this.extend(defs, settings);

            //经过ajax处理表单数据之后返回结果
            $.ajax({
                type: defs.type,
                dataType: defs.dataType,
                url: defs.url,
                data: defs.data,
                success: function (msg) {
                    defs.callBack && defs.callBack({'data': msg, 'status': 1});
                },
                error: function(err) {
                    defs.callBack && defs.callBack({'error': '服务器无响应', 'status': 0});
                }
            });
        },


        //点赞部分
        'good': function( settings ) {

        },


        //添加一条微博评论
        'addComment': function( settings, callBack ) {


             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/saveComment',
             'data': {
              'userId':settings.userId,
             'commentAvatar': settings.commentAvatar,
             'commentUserName': settings.commentUserName,
             'commentReplyUserName': settings.commentReplyUserName, //此处如果是undefined=>评论微博， 有值=>回复评论
             'commentContent': settings.commentContent,
              'commId':settings.commId
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            //var data = {
            //    //该条评论的id值
            //    'cid': 4,
            //
            //    //评论的用户头像
            //    'commentAvatar': 'http://himg2.huanqiu.com/attachment2010/2015/1005/07/43/20151005074352428.jpg',
            //
            //    //评论的用户名
            //    'commentUserName': '蜡笔小新',
            //
            //    //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
            //    'commentReplyUserName': '亚历山大',
            //
            //    //评论的内容
            //    'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的44444',
            //
            //    //多久之前发布的评论
            //    'commentPublishTime': 1
            //};
            //
            //callBack && callBack({'data':data, 'status':1});
            ////////////////////////////以上是前端测试效果用////////////////////////////

        },


        //删除一条微博
        'removeCommentComm': function( settings, callBack ) {


             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/delete',
             'data': {
             'cid': settings.cid //该条评论的id
             },
             'callBack': callBack
             });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            callBack && callBack({'data':'', 'status':1});
            ////////////////////////////以上是前端测试效果用////////////////////////////

        },

        'removeComment': function( settings, callBack ) {


            this.common({
                'type': 'POST',
                'dataType': 'json',
                'url': '/productComment/delete',
                'data': {
                    'cid': settings.cid //该条评论的id
                },
                'callBack': callBack
            });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            callBack && callBack({'data':'', 'status':1});
            ////////////////////////////以上是前端测试效果用////////////////////////////

        },


        //获取评论数据 返回json
        'getCommentDatas': function( settings, callBack ) {

            //异步请求的示例

             this.common({
             'type': 'POST',
             'dataType': 'json',
             'url': '/comment/getComment',
             'data': {
             'currentPage': settings.currentPage, //当前页的标记，如当前是首页，标记 ‘home’，代表用户是在首页发出的url请求数据
             'hid': settings.hid, //该条微博的id值
             'pageStep': settings.pageStep, //当前分页的区间，从1开始，代表第一页
             'count': settings.count //每次请求时获取的微博条数 即每页条数
             },
             'callBack': callBack
             });

            /*
            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            var data = {

                //评论的数据内容
                'commentData': [
                    //第一条评论
                    {
                        //该条评论的id值
                        'cid': 1,

                        //评论的用户头像
                        'commentAvatar': '../img/temp/3030.jpg',

                        //评论的用户名
                        'commentUserName': '阿鲁巴大仙',

                        //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
                        'commentReplyUserName': '',

                        //评论的内容
                        'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。',

                        //多久之前发布的评论
                        'commentPublishTime': 2

                    },

                    //第二条评论
                    {
                        //该条评论的id值
                        'cid': 2,

                        //评论的用户头像
                        'commentAvatar': '../img/temp/3030.jpg',

                        //评论的用户名
                        'commentUserName': '蜡笔小新',

                        //如果是回复型评论，则有被回复的用户名，如果没有则默认留空字符串 “”
                        'commentReplyUserName': '亚历山大',

                        //评论的内容
                        'commentContent': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的222222222',

                        //多久之前发布的评论
                        'commentPublishTime': 7

                    }
                ],

                //该条微博评论的分页页码，此处希望是html
                'commentPageCode': '<a class="pre">上一页</a><a class="c">1</a><a href="javascript:;">2</a><a href="javascript:;">3</a><a href="javascript:;">4</a><a href="javascript:;">3</a><a href="javascript:;">5</a><a href="javascript:;">6</a> ... <a href="javascript:;">43</a><a href="javascript:;" class="next">下一页</a>'

            };

            callBack && callBack({'data':data, 'status':1});
            ////////////////////////////以上是前端测试效果用////////////////////////////
            */
        },


        //获取微博数据 返回json
        'getInfoDatas': function( settings, callBack ) {

            //异步请求的示例

            this.common({
            'type': 'POST',
            'dataType': 'json',
            'url': '/productComment/findWeibo',
            'data': {
            'currentPage': settings.currentPage, //当前页的标记，如当前是首页，标记 ‘home’，代表用户是在首页发出的url请求数据
            'pageStep': settings.pageStep,
            'count': settings.count //每次请求时获取的微博条数
            },
            'callBack': callBack
            });


            ////////////////////////////以下是前端测试效果用////////////////////////////
            //期望返回的json数据格式如下
            /*
            var data = [


                //第一条微博数据
                {
                    //该条微博在数据库的id
                    'hid': 1,

                    //博主的头像
                    'hostAvatar': '../img/temp/8383.jpg',

                    //博主的用户名
                    'hostUserName': '阿鲁巴大仙',

                    //博主的url
                    'hostUserUrl': '####',

                    //博客的图片
                    'infoImages': '../img/temp/250250.jpg',

                    //博客的标题
                    'infoTitle': 'Motorola Moto 360 - Black Leather Smart Watch',

                    //该产品的价格
                    'infoPrice': '$1354',

                    //相关分享条数
                    'infoShareNum': 5,

                    //进入该商品讨论页
                    'infoShareUrl': '###',

                    //该条博客的文字描述
                    'infoDescrition': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，不如顺势趁着老α7降价的大气候，体验全幅吧。',

                    //该条博客多少分钟之前发布
                    'infoPublishTime': 7,

                    //点赞了该博客的用户
                    'infoZanUsers': [
                        {
                            'userName'  : '张三',
                            'url'       : 'http://www.zhangsan.com'
                        },
                        {
                            'userName'  : '李四',
                            'url'       : 'http://www.lisi.com'
                        },
                        {
                            'userName'  : '王五',
                            'url'       : 'http://www.wangwu.com'
                        },
                        {
                            'userName'  : '赵六',
                            'url'       : 'http://www.zhaoliu.com'
                        }
                    ],

                    //该条微博有多少条评论
                    'infoCommentsNum': 34
                },


                //第二条微博数据
                {
                    //该条微博在数据库的id
                    'hid': 2,

                    //博主的头像
                    'hostAvatar': '../img/temp/8383.jpg',

                    //博主的用户名
                    'hostUserName': '蜡笔小新',

                    //博主的url
                    'hostUserUrl': '####',

                    //博客的图片
                    'infoImages': '../img/temp/250250.jpg',

                    //博客的标题
                    'infoTitle': '我是微博第二条评论的标题22222222222222',

                    //该产品的价格
                    'infoPrice': '$250',

                    //相关分享条数
                    'infoShareNum': 10,

                    //进入该商品讨论页
                    'infoShareUrl': '###',

                    //该条博客的文字描述
                    'infoDescrition': '在我的想象中，GR2的对焦系统如果能达到A6000的水平，加个五轴防抖，加个翻转屏，简直是完美的，然而，这一次GR2的升级却选择了挤牙膏，这让人无比的绝望，与其花费五千多元买一个与自己拥有的相机无异的“新”相机，222222222222222222',

                    //该条博客多少分钟之前发布
                    'infoPublishTime': 7,

                    //点赞了该博客的用户
                    'infoZanUsers': [
                        {
                            'userName'  : '张三',
                            'url'       : 'http://www.zhangsan.com'
                        },
                        {
                            'userName'  : '李四',
                            'url'       : 'http://www.lisi.com'
                        },
                        {
                            'userName'  : '王五',
                            'url'       : 'http://www.wangwu.com'
                        }
                    ],

                    //该条微博有多少条评论
                    'infoCommentsNum': 20
                }

            ];

            callBack && callBack({'data':data, 'status':1});
            */
            ////////////////////////////以上是前端测试效果用////////////////////////////
        }

    };

    window.commentServers = commentServers;

})( jQuery );